﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using MySql.Data.MySqlClient;
using MySql.Data;
using System.Data;
using BE;
namespace DAL
{
   public class Requerimiento_DAL
    {

       public DataTable DATA_CENTROCOSTO_Listar(int Estado)
       {
           //Lista todas las especialidades de la tabla data_notas

           String cadena = "";
           Conexion conex = new Conexion();
           MySqlCommand Comnota3 = new MySqlCommand();
           MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
           DataTable data = new DataTable();
           MySqlConnection conexion = new MySqlConnection();
           cadena = conex.ConexionCampusVirtual();

           conexion.ConnectionString = cadena;
           try
           {
               conexion.Open();
               Comnota3.CommandText = "sp_DATA_CENTROCOSTO_Listar";
               Comnota3.CommandType = CommandType.StoredProcedure;
               Comnota3.Parameters.AddWithValue("@in_Estado", Estado);

               Comnota3.Connection = conexion;

               adpnota3 = new MySqlDataAdapter(Comnota3);
               adpnota3.Fill(data);

               return data;

           }
           catch (Exception ex)
           {
               throw ex;

           }

           finally
           {
               Comnota3.Dispose();
               conexion.Close();
           }

       }

       public Int32 DATA_REQUERIMIENTO_Insert(Requerimiento_BE Req, List<Articulo_BE> Detalle)

       {
           String cadena = "";
           Conexion conex = new Conexion();
           MySqlCommand cmd = new MySqlCommand();
           
          
           MySqlConnection conexion = new MySqlConnection();
           MySqlTransaction tran = null;
           cadena = conex.ConexionCampusVirtual();
           conexion.ConnectionString = cadena;

           try
           {

               conexion.Open();
               tran = conexion.BeginTransaction();
               cmd.CommandText = "sp_DATA_REQUERIMIENTO_Insert";
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Connection = conexion;

               cmd.Parameters.AddWithValue("@in_Id_Especialidad",Req.Id_Especialidad);
               cmd.Parameters.AddWithValue("@in_Usuario", Req.Usuario);
               cmd.Parameters.AddWithValue("@in_Fecha_Requermiento",Req.Fecha_Requerimiento);
               cmd.Parameters.AddWithValue("@in_Estado", Req.Id_Estado);
               String x = "";
               x = cmd.ExecuteScalar().ToString();
               int y = Convert.ToInt32(x);

                   foreach (Articulo_BE Fila in Detalle)
                   {
                       Articulo_BE det = new Articulo_BE();
                       det.Id_Requerimiento = y;
                       det.Item = Fila.Item;
                       det.Descripcion = Fila.Descripcion;
                       det.Codigo_Articulo = Fila.Codigo_Articulo;
                       det.Cantidad = Fila.Cantidad;
                       det.Estado = Fila.Estado;
                       det.Id_Tipo_Requerimiento =4; // cuando se registra un requerimiento almacen tiene que catalogar que tipo de requerimiento es 
                       // puede ser compras stock etc al inicio se guardar el id 4 que en la tabla tipo requerimiento es vacio

                       DATA_REQUERIMIENTO_DETALLE_Insert(det, tran); //Ingresa cada Item de Producto del Requrimiento.                      
                   

               }

                   tran.Commit();
                   return y;

           }
           catch (Exception ex)
           {
               tran.Rollback();
               throw;
           }

           finally
           {
               conexion.Close();
               cmd.Dispose();
           }

       }


       private void DATA_REQUERIMIENTO_DETALLE_Insert(Articulo_BE det, MySqlTransaction tran)
       {
           String cadena = "";
           Conexion conex = new Conexion();
           MySqlCommand cmd = new MySqlCommand();
           MySqlConnection conexion = new MySqlConnection();

           cadena = conex.ConexionCampusVirtual();
           conexion.ConnectionString = cadena;
           
           try
           {
               conexion.Open();
               tran = conexion.BeginTransaction();
               cmd.CommandText = "sp_DATA_REQUERIMIENTO_DETALLE_Insert";
               cmd.Connection = conexion;
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Parameters.AddWithValue("@in_Id_Requerimiento", det.Id_Requerimiento);
               cmd.Parameters.AddWithValue("@in_item", det.Item);
               cmd.Parameters.AddWithValue("@in_Descripcion", det.Descripcion);
               cmd.Parameters.AddWithValue("@in_Codigo_Articulo", det.Codigo_Articulo);
               cmd.Parameters.AddWithValue("@in_cantidad", det.Cantidad);
               cmd.Parameters.AddWithValue("@in_estado", det.Estado);
               cmd.Parameters.AddWithValue("@in_Id_Tipo_Requerimiento", det.Id_Tipo_Requerimiento);
               

               cmd.CommandTimeout = 3600;
               cmd.ExecuteNonQuery();



           }

           catch (Exception ex)
           {
               throw ex;
           }

           finally
           {


           }

       }


       public DataTable DATA_ESTADO_Listar(string Estado)
       {
           //Lista todos los estados posibles de los Requerimientos

           String cadena = "";
           Conexion conex = new Conexion();
           MySqlCommand Comnota3 = new MySqlCommand();
           MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
           DataTable data = new DataTable();
           MySqlConnection conexion = new MySqlConnection();
           cadena = conex.ConexionCampusVirtual();

           conexion.ConnectionString = cadena;
           try
           {
               conexion.Open();
               Comnota3.CommandText = "sp_Estado_Obtener";
               Comnota3.CommandType = CommandType.StoredProcedure;
               Comnota3.Parameters.AddWithValue("@NomAplicacion", Estado);

               Comnota3.Connection = conexion;

               adpnota3 = new MySqlDataAdapter(Comnota3);
               adpnota3.Fill(data);

               return data;

           }
           catch (Exception ex)
           {
               throw ex;

           }

           finally
           {
               Comnota3.Dispose();
               conexion.Close();
           }

       }



    }
}
